home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 June / EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso / earcd / comm2 / mmdlgf60.lha / REXX / MM_DLGForward.rexx
OS/2 REXX Batch file  |  1996-04-25  |  5KB  |  48 lines

  1. /*
  2. ** $VER: MM_DLGForward 0.60 (14.04.96)
  3. **
  4. ** Written by Paolo Carotenuto
  5. **
  6. */
  7.  
  8. DROP MM.
  9.  
  10. /* ---------------------------------------------------------------------- */
  11.  
  12. MM.PathCfg   = 'MM:Config/' ; MM.PrgName   = 'MM_DLGForward v0.60' ; MM.Copyright = '(C) 1995-96 Paolo Carotenuto' ; MM.LogLevel  = 2
  13.  
  14. /* ---------------------------------------------------------------------- */
  15.  
  16. ADDRESS 'MAILMANAGER' ; CALL WriteLog(MM.PrgName 'Started') ; CALL ReadConfig()
  17.  
  18. DO i = 0 FOR MM.Forward.Count ; PARSE VAR MM.Forward.i MM.Node User ; MM.User  = 'USER:'TRANSLATE(STRIP(User),'_',' ')'/Pointers.msg' ; MM.xUser = 'USER:'TRANSLATE(STRIP(User),'_',' ')'/User.msg' ; CALL WriteLog('') ; CALL WriteLog('Processing user ['STRIP(User)']') ; IF EXISTS(MM.User) THEN DO
  19.     OPEN('User',MM.xUser,'R') ;  SEEK('User',38,'B') ; NoRead = C2D(READCH('User',2)) + 1 ; Pointer.Count = 0 ;  MM_ReadStem MM.User Pointer ; IF Pointer.1 = 0 | Pointer.Count = 1 | NoRead > Pointer.1 THEN DO ; CALL WriteLog('NO Messages Found.') ; END ; DO f = NoRead TO Pointer.1 ; Message = 'USER:'TRANSLATE(STRIP(User),'_',' ')'/'f'.MSG' ; IF EXISTS(Message) THEN DO ; OPEN('In',Message,'A') ; SEEK('In',165,'B') ; IF C2D(READCH('In',2)) = 0 THEN DO ; MM.Testo.Count = 0 ; CALL WriteLog('Message #'f 'Forwarded to' MM.Node) ; SEEK('In',0,'B') ; MM.FromName = StripEnd(READCH('In',36)) ; MM.ToName   = StripEnd(READCH('In',36)) ; MM.Sogg     = StripEnd(READCH('In',72)) ; MM.Date     = READCH('In',19) ; SEEK('In',24) ; MM.BRead    = C2D(READCH('In',2)) + 4 ;  SEEK('In',1) ; DO p = 0 FOR MM.Messaggio.Count ; CALL AddLine(Trasforma(MM.Messaggio.p)) ; END ; DO WHILE ~EOF('In') ; CALL AddLine(READLN('In')) ; END
  20.             CALL AddLine('') ; CALL AddLine('-+- Forwarded By' MM.PrgName '-' MM.Copyright) ; CALL AddLine('') ; MM_WriteStem 'T:MM_DLGForward.Tmp' MM.Testo ; Write.From     = MM.FromName ; Write.FromAddr = MM.Address ; Write.To       = MM.ToName ;  Write.ToAddr   = MM.Node ; Write.Subj     = MM.Sogg ;  Write.Flags    = 'PVT' ;  Write.File     = 'T:MM_DLGForward.Tmp' ; MM_WriteMsg MM.Mail Write ; SEEK('In',165,'B') ; WRITECH('In','1'x) ; SEEK('In',187,'B') ; WRITECH('In',D2C(MM.BRead)) ; MM.NumMsg = MM.NumMsg + 1 ; END  ; ELSE CALL WriteLog('Message #'f 'already processed or netmail') ; CLOSE('In') ; END ; ELSE CALL WriteLog('Message #'f 'Not found.') ; END ; IF Pointer.1 <= 255 THEN SEEK('User',39,'B') ; ELSE SEEK('User',38,'B') ;  WRITECH('User',D2C(Pointer.1)) ; CLOSE('User') ; END ; ELSE CALL WriteLog('NO Messages Found.') ; END ; IF MM.NumMsg > 0 THEN DO ; MM_GetAreaInfo MM.Mail Info ; Name = Info.Path||'Pointers.Msg' ; Pointer.Count = 0 ; MM_ReadStem Name Pointer ; Pointer.1 = Pointer.1 + MM.NumMsg ; MM_WriteStem Name Pointer ; END ; MM_Export MM.Mail ; CALL WriteLog(MM.PrgName 'Ended') ; EXIT
  21.  
  22. /* ---------------------------------------------------------------------- */
  23.  
  24. StripEnd: PROCEDURE EXPOSE MM. ; PARSE ARG Stringa ; RETURN LEFT(Stringa,INDEX(Stringa,'00'x))
  25.  
  26. /* ---------------------------------------------------------------------- */
  27.  
  28. Replace: PROCEDURE ; PARSE ARG String, New, Old ; DO WHILE INDEX(String, Old) ~= 0  ; INTERPRET "PARSE VAR String l '"Old"' r"  ; String = l || New || r ; END ; RETURN String
  29.  
  30. /* ---------------------------------------------------------------------- */
  31.  
  32. Trasforma: PROCEDURE EXPOSE MM. ; PARSE ARG String ; IF INDEX(String,'%')=0 THEN RETURN String ; String = Replace(String, MM.Date ,'%DATE'  ) ; RETURN String
  33.  
  34. /* ---------------------------------------------------------------------- */
  35.  
  36. AddLine: PROCEDURE EXPOSE MM. ; PARSE ARG Linea ; MM_AddToStem MM.Testo 'Linea' ; RETURN
  37.  
  38. /* ---------------------------------------------------------------------- */
  39.  
  40. ReadConfig: PROCEDURE EXPOSE MM. ; MM.Forward.Count   = 0 ; MM.Messaggio.Count = 0 ; MM.NumMsg          = 0 ; MM.Address         = '' ; MM.Mail            = '' ; MM_ReadStem MM.PathCfg||'MM_DLGForward.Cfg' Config ; IF Rc ~= 0 THEN DO ; CALL WriteLog('*** Error: Can not open config "'MM.PathCfg'MM_MsgTrack.cfg"') ; EXIT 10 ; END ; DO l = 0 FOR Config.Count ; IF (LEFT(Config.l,1) ~= ';') & Config.l ~= '' THEN DO  ; PARSE VAR Config.l Keyword Dato ; SELECT ;  WHEN UPPER(Keyword) = '#MESSAGE' THEN MM_AddToStem MM.Messaggio 'Dato' ;  WHEN UPPER(Keyword) = '#FORWARD' THEN MM_AddToStem MM.Forward   'Dato' ; WHEN UPPER(Keyword) = '#ADDRESS' THEN MM.Address = STRIP(Dato) ; WHEN UPPER(Keyword) = '#NETMAIL' THEN MM.Mail    = STRIP(Dato) ; OTHERWISE ; END ; END ; END
  41. IF MM.Address = '' THEN DO ; CALL WriteLog('Config parse error. You need to specify the Address') ; EXIT 10 ; END ; IF MM.Mail = '' THEN DO ; CALL WriteLog('Config parse error. You need to specify the Mail') ; EXIT 10 ; END ; RETURN
  42.  
  43. /* ---------------------------------------------------------------------- */
  44.  
  45. WriteLog: PROCEDURE EXPOSE MM. ; PARSE ARG Testo ; MM_WriteLog 'Testo' MM.LogLevel ; RETURN
  46.  
  47. /* ---------------------------------------------------------------------- */
  48.